package com.qdxht.dispenser.utils;

import java.util.Arrays;
import java.util.List;

public class MediaTypeChecker {

    // 常见图片格式后缀
    private static final List<String> IMAGE_EXTENSIONS = Arrays.asList(
            "jpg", "jpeg", "png", "gif", "bmp", "webp", "tiff", "svg"
    );

    // 常见视频格式后缀
    private static final List<String> VIDEO_EXTENSIONS = Arrays.asList(
            "mp4", "avi", "mov", "wmv", "flv", "mkv", "mpeg", "mpg", "webm", "3gp"
    );

    /**
     * 判断URL是否为图片文件
     * @param url 文件URL
     * @return 如果是图片返回true，否则返回false
     */
    public static boolean isImageUrl(String url) {
        String extension = getFileExtension(url);
        return extension != null && IMAGE_EXTENSIONS.contains(extension.toLowerCase());
    }

    /**
     * 判断URL是否为视频文件
     * @param url 文件URL
     * @return 如果是视频返回true，否则返回false
     */
    public static boolean isVideoUrl(String url) {
        String extension = getFileExtension(url);
        return extension != null && VIDEO_EXTENSIONS.contains(extension.toLowerCase());
    }

    /**
     * 从URL中提取文件后缀名（优化版）
     * @param url 文件URL
     * @return 文件后缀名（小写形式），无后缀时返回null
     */
    private static String getFileExtension(String url) {
        if (url == null || url.isEmpty()) return null;

        // 去除URL中的查询参数[6,7](@ref)
        String cleanUrl = url.split("\\?")[0];

        // 获取最后一个斜杠后的文件名
        String fileName = cleanUrl.substring(cleanUrl.lastIndexOf('/') + 1);

        // 处理无后缀名的情况
        if (!fileName.contains(".")) return null;

        // 获取后缀名（排除点号）[7](@ref)
        return fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
    }
}